package com.zhou.bpm.service;

import com.zhou.bpm.domain.dto.BpmNodeApproverDto;
import com.zhou.bpm.domain.dto.BpmNodeDto;
import com.zhou.bpm.domain.vo.NodeApproverVo;
import com.zhou.bpm.entity.BpmNode;

import java.util.List;

/**
 * @Author: zhoujinchuan
 * @Description: TODO（请添加描述）
 * @CreateTime: 2023/10/25 10:06
 */
public interface IProcessService {

    /**
     * 添加流程节点
     *
     * @param dto
     */
    BpmNode addProcessNode(BpmNodeDto dto);

    /**
     * 修改流程节点
     * @param bpmNode
     * @return
     */
    BpmNode modifyProcessNode(BpmNodeDto bpmNode);

    /**
     * 删除流程节点
     * @param processCode
     * @param nodeCode
     * @return
     */
    void deleteProcessNode(String processCode, String nodeCode);

    /**
     * 通过流程编码获取节点列表
     * @param processCode
     * @return
     */
    List<BpmNode> listQueryProcessNode(String processCode);

    /**
     * 通过流程编码和节点编码获取节点
     * @param processCode
     * @param nodeCode
     * @return
     */
    BpmNode getByProcessCodeAndNodeCode(String processCode, String nodeCode);

    /**
     * 查询流程节点审批人
     * @param processCode
     * @param nodeCode
     * @return
     */
    List<NodeApproverVo> listQueryNodeApprover(String processCode, String nodeCode);

    /**
     * 调整流程节点审批人
     *
     * @param dtoList
     */
    void adjustmentNodeApprover(BpmNodeApproverDto dtoList);

    /**
     * 查询当前节点之前的节点
     *
     * @param processCode
     * @param currentNode
     * @return
     */
    List<BpmNode> queryProcessNodesBeforeList(String processCode, String currentNode);
}
